package com.edu.exam.enums.grading.analysis;

import com.edu.exam.enums.core.BaseEnum;

import java.util.Arrays;

/**
 * 颜色调色板枚举
 *
 * <p>定义了可视化图表中使用的各种颜色调色板，用于控制图表的配色方案。</p>
 *
 * @author 系统生成
 * @version 1.0
 * @since 2025-11-14
 */
public enum ColorPalette implements BaseEnum {

    /**
     * 默认调色板
     */
    DEFAULT("DEFAULT", "默认调色板"),

    /**
     * 蓝色调色板
     */
    BLUE("BLUE", "蓝色调色板"),

    /**
     * 绿色调色板
     */
    GREEN("GREEN", "绿色调色板"),

    /**
     * 红色调色板
     */
    RED("RED", "红色调色板"),

    /**
     * 紫色调色板
     */
    PURPLE("PURPLE", "紫色调色板"),

    /**
     * 橙色调色板
     */
    ORANGE("ORANGE", "橙色调色板"),

    /**
     * 彩虹调色板
     */
    RAINBOW("RAINBOW", "彩虹调色板"),

    /**
     * 灰度调色板
     */
    GRAYSCALE("GRAYSCALE", "灰度调色板"),

    /**
     * 暖色调色板
     */
    WARM("WARM", "暖色调色板"),

    /**
     * 冷色调色板
     */
    COOL("COOL", "冷色调色板"),

    /**
     * 高对比度调色板
     */
    HIGH_CONTRAST("HIGH_CONTRAST", "高对比度调色板"),

    /**
     * 柔和调色板
     */
    PASTEL("PASTEL", "柔和调色板"),

    /**
     * 鲜艳调色板
     */
    VIBRANT("VIBRANT", "鲜艳调色板"),

    /**
     * 商务调色板
     */
    BUSINESS("BUSINESS", "商务调色板"),

    /**
     * 教育调色板
     */
    EDUCATION("EDUCATION", "教育调色板");

    private final String code;
    private final String description;

    ColorPalette(String code, String description) {
        this.code = code;
        this.description = description;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    public static ColorPalette fromCode(String code) {
        return Arrays.stream(values())
                .filter(e -> e.getCode().equals(code))
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Unknown color palette code: " + code));
    }
    @Override
    public String toString() {
        return description;
    }
}